Support Vector Machine (SVM)

Machine Learning - সাইকিট-লার্ন (Scikit-Learn)
213

Support Vector Machine (SVM) একটি শক্তিশালী এবং জনপ্রিয় মেশিন লার্নিং অ্যালগরিদম, যা প্রধানত ক্লাসিফিকেশন এবং রিগ্রেশন সমস্যার জন্য ব্যবহৃত হয়। SVM ক্লাসিফিকেশন সমস্যায় একাধিক শ্রেণির মধ্যে ডেটাকে বিভক্ত করতে সক্ষম এবং এটি অনেক ক্ষেত্রে খুবই কার্যকরী। SVM এর মূল উদ্দেশ্য হলো এমন একটি হাইপারপ্লেন তৈরি করা যা বিভিন্ন শ্রেণীর মধ্যে সর্বোচ্চ মার্জিন (distance) তৈরি করে, অর্থাৎ শ্রেণীগুলির মধ্যে পার্থক্য বাড়ানোর চেষ্টা করে।


SVM এর মূল ধারণা:

SVM মূলত দুটি শ্রেণীকে পৃথক করার জন্য একটি লিনিয়ার হাইপারপ্লেন ব্যবহার করে। তবে, যদি ডেটা লিনিয়ার না হয়, তাহলে SVMকে একটি কর্ণাল ট্রিক ব্যবহার করে হাইপারপ্লেনের সাথে ডেটাকে পুনঃরূপান্তরিত করতে সাহায্য করা হয়, যাতে এটি হাইপারপ্লেনের মাধ্যমে সঠিকভাবে শ্রেণীবদ্ধ হতে পারে।

1. লিনিয়ার SVM:

লিনিয়ার SVM মডেল একটি সোজা লাইন (2D স্পেসে) বা একটি হাইপারপ্লেন (n-dimensional স্পেসে) ব্যবহার করে ডেটাকে বিভক্ত করে। দুইটি শ্রেণীকে সর্বোচ্চ মার্জিন দিয়ে আলাদা করা হয়, যাতে শ্রেণীগুলির মধ্যে পার্থক্য আরও স্পষ্ট হয়।

2. নন-লিনিয়ার SVM (Kernel Trick):

যখন ডেটা লিনিয়ারভাবে বিভক্ত করা যায় না, তখন SVM কর্ণাল ট্রিক ব্যবহার করে ডেটাকে একটি উচ্চ মাত্রার স্পেসে ম্যাপ করে, যেখানে ডেটা লিনিয়ারভাবে বিভক্ত হতে পারে। সাধারণত, রেডিয়াল বেসিস ফাংশন (RBF) কোরনাল ব্যবহার করা হয় যা খুব জনপ্রিয়।


SVM এর কাজের পদ্ধতি:

  1. মার্জিন (Margin) এবং হাইপারপ্লেন: SVM এমন একটি হাইপারপ্লেন তৈরি করতে চায় যা শ্রেণীভুক্ত দুটি গ্রুপকে আলাদা করে এবং তাদের মধ্যে সর্বোচ্চ মার্জিন তৈরি করে। মার্জিন হল হাইপারপ্লেনের কাছাকাছি দুটি ডেটা পয়েন্টের মধ্যে সর্বনিম্ন দূরত্ব। SVM এই মার্জিনটি সর্বাধিক করতে চায়, যা শ্রেণীগুলির মধ্যে পার্থক্য বাড়ায় এবং মডেলকে আরও সঠিকভাবে কাজ করতে সহায়ক হয়।
  2. Support Vectors: Support Vectors হলো ডেটার এমন পয়েন্টগুলি যা হাইপারপ্লেনের কাছাকাছি অবস্থান করে এবং মার্জিন নির্ধারণে গুরুত্বপূর্ণ ভূমিকা পালন করে। এই পয়েন্টগুলোই মডেলের পারফরম্যান্সে সবচেয়ে বেশি প্রভাব ফেলে। মডেলটি শুধুমাত্র সাপোর্ট ভেক্টর পয়েন্টগুলির সাহায্যে শেখে, তাই এর নাম Support Vector Machine

SVM এর কম্পোনেন্টস:

  1. Hyperplane (হাইপারপ্লেন): এটি একটি n-1 মাত্রার সমতল (flat), যা ডেটার বিভিন্ন শ্রেণী আলাদা করে। 2D-তে এটি একটি সোজা লাইন, 3D-তে একটি পলিট, এবং উচ্চ মাত্রায় এটি একটি হাইপারপ্লেন।
  2. Margin (মার্জিন): ডেটার দুই শ্রেণীর মধ্যে সবচেয়ে কাছাকাছি পয়েন্টের মধ্যে দূরত্ব। SVM সর্বাধিক মার্জিন তৈরি করার চেষ্টা করে।
  3. Support Vectors: হাইপারপ্লেনের কাছে থাকা ডেটার পয়েন্টগুলিই সাপোর্ট ভেক্টর। এই পয়েন্টগুলির উপর ভিত্তি করে মডেলটি কাজ করে এবং শ্রেণীভাগ নির্ধারণ করে।

SVM এর কিছু প্রধান বৈশিষ্ট্য:

  • মার্জিন বাড়ানো:
    SVM সর্বোচ্চ মার্জিন খোঁজে, যা শ্রেণীভেদে পার্থক্য বাড়ায় এবং মডেলটির সঠিকতা উন্নত করে।
  • রেডিয়াল বেসিস কোরনাল (RBF) ব্যবহার:
    নন-লিনিয়ার ডেটা জন্য, RBF কোরনাল ব্যবহার করা হয় যা ডেটাকে উচ্চ মাত্রার স্পেসে রূপান্তরিত করে।
  • কম্পিউটেশনাল দক্ষতা:
    SVM সাধারণত ছোট বা মাঝারি আকারের ডেটাসেটের জন্য ভালো কাজ করে, তবে এটি বড় ডেটাসেটের জন্য কিছুটা ধীর গতির হতে পারে।
  • ডুয়াল ফর্মুলেশন:
    SVM মডেলটি ডুয়াল ফর্মুলেশনে কাজ করে, যা লিনিয়ার এবং নন-লিনিয়ার সমস্যার জন্য উপযোগী।

SVM এর উদাহরণ:

ধরা যাক, একটি ইমেইল সিস্টেমের মাধ্যমে স্প্যাম এবং নন-স্প্যাম ইমেইল আলাদা করা হচ্ছে। এখানে ইনপুট ফিচারগুলি হতে পারে ইমেইলের বিষয়, কন্টেন্ট, পাঠকের নাম ইত্যাদি, এবং আউটপুট হবে স্প্যাম বা নন-স্প্যাম। SVM এই দুটি শ্রেণীকে আলাদা করার জন্য একটি হাইপারপ্লেন তৈরি করবে।


SVM এর ব্যবহার ক্ষেত্র:

  • ক্লাসিফিকেশন:
    ইমেইল স্প্যাম ডিটেকশন, রোগের প্রেডিকশন, ইমেজ বা ডকুমেন্ট ক্যাটেগরাইজেশন।
  • রিগ্রেশন:
    স্টক মার্কেট প্রেডিকশন, হাউজ প্রাইস প্রেডিকশন।
  • ক্লাস্টারিং:
    কিছু ক্ষেত্রে SVM ব্যবহার করা হয় ক্লাস্টারিং সমস্যার জন্য, যেমন প্যাটার্ন ডিটেকশন বা গ্রাহক সেগমেন্টেশন।

SVM এর সুবিধা:

  • সঠিক পারফরম্যান্স:
    SVM উচ্চ পারফরম্যান্স প্রদান করতে সক্ষম, বিশেষ করে ছোট এবং মাঝারি আকারের ডেটাসেটের জন্য।
  • ব্যবহার সহজ:
    এটি একটি শক্তিশালী এবং সহজে ব্যবহারযোগ্য টুল, বিশেষ করে যখন শ্রেণীভেদ স্পষ্ট এবং সীমিত ডেটার সাথে কাজ করা হয়।

SVM এর সীমাবদ্ধতা:

  • বড় ডেটাসেটের জন্য ধীরগতির:
    বড় ডেটাসেটের ক্ষেত্রে, SVM অনেক বেশি কম্পিউটেশনাল ক্ষমতা প্রয়োজন এবং এটি ধীর হতে পারে।
  • কর্নাল ফাংশন নির্বাচন:
    যদি সঠিক কোরনাল ফাংশন নির্বাচন না করা হয়, তবে SVM এর পারফরম্যান্স ক্ষতিগ্রস্ত হতে পারে।

সারাংশ

Support Vector Machine (SVM) একটি শক্তিশালী এবং জনপ্রিয় মেশিন লার্নিং অ্যালগরিদম যা ক্লাসিফিকেশন, রিগ্রেশন এবং কিছু বিশেষ ক্ষেত্রে ক্লাস্টারিং সমস্যায় ব্যবহৃত হয়। এটি একটি লিনিয়ার বা নন-লিনিয়ার হাইপারপ্লেন তৈরি করে ডেটাকে শ্রেণীভুক্ত করতে সক্ষম এবং এর পারফরম্যান্স অনেক ক্ষেত্রে খুবই উচ্চ। SVM এর শক্তিশালী বৈশিষ্ট্য এবং কম্পিউটেশনাল দক্ষতা এটি মেশিন লার্নিংয়ের একটি গুরুত্বপূর্ণ অ্যালগরিদম বানিয়েছে।

Content added By

SVM এর মৌলিক ধারণা

199

SVM (Support Vector Machine) হলো একটি জনপ্রিয় এবং শক্তিশালী মেশিন লার্নিং অ্যালগরিদম, যা ক্লাসিফিকেশন এবং রিগ্রেশন সমস্যা সমাধানে ব্যবহৃত হয়। এটি মূলত Supervised Learning (সুপারভাইজড লার্নিং) পদ্ধতির অধীনে কাজ করে এবং ডেটার মধ্যে শ্রেণী বিভাজন করতে সাহায্য করে। SVM ক্লাসিফিকেশন মডেলগুলোর মধ্যে অন্যতম জনপ্রিয় এবং কার্যকরী অ্যালগরিদম হিসেবে বিবেচিত।


SVM এর মূল ধারণা

SVM একটি হাইপারপ্লেন (Hyperplane) ব্যবহার করে ডেটাকে দুটি শ্রেণিতে বিভক্ত করার চেষ্টা করে। এটি ডেটার মধ্যে শ্রেণীভেদ করতে একটি সীমানা তৈরি করে, যেখানে সেই সীমানার এক পাশে একটি শ্রেণী এবং অন্য পাশে অন্য শ্রেণী থাকে।

SVM এর লক্ষ্য হলো ডেটাকে একটি ম্যাক্সিমাম মার্জিনে বিভক্ত করা, অর্থাৎ দুটি শ্রেণীকে আলাদা করার জন্য এমন একটি হাইপারপ্লেন নির্বাচন করা যা উভয় শ্রেণীর সীমানার মধ্যে সর্বোচ্চ দূরত্ব সৃষ্টি করে। এটি Support Vectors ব্যবহার করে এই কাজটি করে।


Hyperplane এবং Margin

  1. Hyperplane (হাইপারপ্লেন):
    একটি Hyperplane হলো একটি সীমান্ত বা পৃষ্ঠ, যা ডেটাকে দুটি শ্রেণিতে বিভক্ত করে। এটি একটি k-ডাইমেনশনাল স্পেসে একটি (k-1)-ডাইমেনশনাল সীমানা। উদাহরণস্বরূপ, 2D স্পেসে এটি একটি রেখা (line), 3D স্পেসে এটি একটি পৃষ্ঠ (plane) এবং উচ্চতর ডাইমেনশনে এটি একটি হাইপারপ্লেন।
  2. Margin (মার্জিন):
    Margin হলো দুই শ্রেণীর মধ্যে দূরত্ব। SVM এই মার্জিনকে সর্বোচ্চ করতে চায়, অর্থাৎ এমন একটি হাইপারপ্লেন নির্বাচন করতে চায় যা দুই শ্রেণীকে সবচেয়ে বড় দূরত্বে বিভক্ত করে।
  3. Support Vectors (সাপোর্ট ভেক্টর):
    Support Vectors হলো সেই ডেটা পয়েন্টগুলি যা হাইপারপ্লেনের কাছাকাছি অবস্থান করে এবং মার্জিন তৈরি করতে সাহায্য করে। এই পয়েন্টগুলি ডেটার শ্রেণীভেদ নির্ধারণে গুরুত্বপূর্ণ ভূমিকা পালন করে।

SVM এর কাজের প্রক্রিয়া

  1. ডেটা পয়েন্টের মধ্যে শ্রেণী বিভাজন: SVM ডেটা পয়েন্টের মধ্যে শ্রেণী বিভাজন করতে একটি হাইপারপ্লেন তৈরি করে। এটি প্রথমে ডেটাকে 2D বা 3D স্পেসে পুঙ্খানুপুঙ্খভাবে বিশ্লেষণ করে এবং শ্রেণীভেদ করতে একটি হাইপারপ্লেন নির্বাচন করে।
  2. ম্যাক্সিমাম মার্জিন নির্বাচন: SVM সর্বাধিক মার্জিন নির্বাচন করতে চায়, যাতে শ্রেণীভেদ শক্তিশালী হয় এবং যে কোনো নতুন ডেটা পয়েন্টকে সঠিকভাবে শ্রেণীবদ্ধ করা যায়। মার্জিন যত বড় হবে, মডেলটি তত বেশি সাধারণীকৃত এবং ভাল পারফরম্যান্স প্রদান করবে।
  3. Kernel Trick (কর্ণেল ট্রিক): কিছু ক্ষেত্রে ডেটা সোজাসুজি বিভক্ত করা সম্ভব নয়। তখন Kernel Trick ব্যবহার করা হয়। এটি ডেটাকে একটি উচ্চতর মাত্রায় (higher dimension) ম্যাপ করে, যেখানে ডেটাকে সরলভাবে বিভক্ত করা সম্ভব হয়। বিভিন্ন ধরনের কের্নেল যেমন Linear, Polynomial, Radial Basis Function (RBF) ইত্যাদি ব্যবহার করা হয়।

SVM এর ধরণ

  1. লাইনিয়ার SVM:
    যখন ডেটা দুই শ্রেণিতে সোজাসুজি বিভক্ত করা যায়, তখন লাইনিয়ার SVM ব্যবহার করা হয়। এতে ডেটা পয়েন্টগুলোর মধ্যে একটি সোজা হাইপারপ্লেন নির্বাচন করা হয়।
  2. নন-লাইনিয়ার SVM:
    যদি ডেটা পয়েন্টগুলির মধ্যে সোজা বিভাজন সম্ভব না হয়, তবে নন-লাইনিয়ার SVM ব্যবহার করা হয়। এখানে, Kernel Trick ব্যবহার করে ডেটাকে উচ্চতর মাত্রায় ম্যাপ করা হয় এবং সেখানে বিভাজন তৈরি করা হয়।

SVM এর সুবিধা:

  • ম্যাক্সিমাম মার্জিন:
    SVM সর্বাধিক মার্জিন তৈরি করে, যা মডেলের সাধারণীকরণ ক্ষমতা বাড়ায় এবং এটি নতুন ডেটার উপরও ভালো পারফরম্যান্স দেয়।
  • প্রযুক্তিগতভাবে শক্তিশালী:
    SVM বিশেষত কম ডেটা এবং উচ্চ মাত্রার ডেটা (high-dimensional data) নিয়ে কাজ করতে খুবই কার্যকরী।
  • Kernel Trick:
    SVM তে Kernel Trick ব্যবহারের মাধ্যমে এটি নন-লাইনিয়ার ডেটা সোজাসুজি বিভক্ত করার জন্য শক্তিশালী এবং উপযোগী।
  • দ্রুত এবং দক্ষ:
    এটি প্রশিক্ষণ ও পূর্বাভাস তৈরির জন্য খুবই দক্ষ এবং কম্পিউটেশনালভাবে কার্যকরী।

SVM এর সীমাবদ্ধতা:

  • প্রশিক্ষণ সময়:
    বড় ডেটাসেটের জন্য SVM কিছুটা ধীর হতে পারে, কারণ এটি প্রশিক্ষণের জন্য অনেক গণনা সম্পাদন করে।
  • কির্নেল পছন্দ:
    সঠিক কির্নেল নির্বাচন করা গুরুত্বপূর্ণ এবং ভুল কির্নেল ব্যবহার করলে মডেলটি ভালোভাবে কাজ নাও করতে পারে।

SVM এর উদাহরণ:

from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# ডেটাসেট লোড করা
iris = load_iris()
X = iris.data
y = iris.target

# ডেটা ট্রেন এবং টেস্ট সেটে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# SVM মডেল তৈরি
model = SVC(kernel='linear')  # লিনিয়ার কির্নেল ব্যবহার করা হচ্ছে
model.fit(X_train, y_train)

# পূর্বাভাস তৈরি
y_pred = model.predict(X_test)

# একুরেসি মাপা
print(f"Accuracy: {accuracy_score(y_test, y_pred)}")

সারাংশ

SVM একটি শক্তিশালী এবং জনপ্রিয় মেশিন লার্নিং অ্যালগরিদম যা ডেটাকে শ্রেণীভেদ করতে হাইপারপ্লেন ব্যবহার করে। এটি Support Vectors ব্যবহার করে শ্রেণীভেদে সাহায্য করে এবং সর্বাধিক margin তৈরি করে। Kernel Trick এর মাধ্যমে এটি নন-লাইনিয়ার ডেটা বিশ্লেষণেও কার্যকরী। SVM সাধারণত কম ডেটাসেট বা উচ্চ মাত্রার ডেটাতে ভালো ফলাফল দেয়, কিন্তু বড় ডেটাসেটের জন্য এটি ধীর হতে পারে।

Content added By

Hyperplane এবং Margin এর ভূমিকা

213

Hyperplane এবং Margin এর ভূমিকা Support Vector Machine (SVM) এর মধ্যে গুরুত্বপূর্ণ এবং মৌলিক ধারণা। SVM হল একটি শক্তিশালী ক্লাসিফিকেশন অ্যালগরিদম, যা ডেটাকে বিভিন্ন শ্রেণিতে শ্রেণীবদ্ধ করতে Hyperplane এবং Margin ব্যবহার করে। চলুন এই দুটি ধারণা বিস্তারিতভাবে দেখি:


1. Hyperplane (হাইপারপ্লেন)

Hyperplane হলো একটি আবstraction বা গাণিতিক ফর্ম যা n-dimensional স্পেসে ডেটাকে দুটি শ্রেণিতে বিভক্ত করার জন্য ব্যবহৃত হয়। এক কথায়, এটি এমন একটি ভেক্টর স্পেস যা ডেটার দুটি শ্রেণিকে আলাদা করে। একটি Hyperplane সোজা রেখা (2D), সমতল (3D), বা উচ্চ মাত্রার কোনও সীমারেখা হতে পারে। এটি SVM-এর জন্য বিশেষভাবে গুরুত্বপূর্ণ কারণ এটি ডেটাকে শ্রেণিবদ্ধ করতে সহায়ক।

Hyperplane এর ভূমিকা:

  • সীমারেখা নির্ধারণ:
    Hyperplane মডেলটি ডেটার দুটি শ্রেণিকে পৃথক করার জন্য একটি সীমানা বা সীমারেখা হিসেবে কাজ করে।
  • ডেটা বিভাজন:
    Hyperplane ডেটার দুটি শ্রেণির মধ্যে সবচেয়ে ভাল বিভাজন বা পৃথকীকরণ তৈরি করে। এটি ডেটার মধ্যে একটি স্পষ্ট রেখা বা সমতল সৃষ্টি করে, যার একদিকে একটি শ্রেণি এবং অন্যদিকে আরেকটি শ্রেণি থাকে।
  • যতটা সম্ভব সীমারেখা তৈরি করা:
    SVM এমন একটি Hyperplane নির্বাচন করার চেষ্টা করে যা ডেটার দুটি শ্রেণির মধ্যে সর্বোচ্চ দূরত্ব তৈরি করে, যাতে মডেলটি নতুন ডেটাতে আরও ভালভাবে কাজ করতে পারে।

2. Margin (মার্জিন)

Margin হলো দুটি শ্রেণির ডেটার মধ্যে Hyperplane থেকে সর্বোচ্চ দূরত্ব। এটি মডেলটির নিরাপত্তা বা স্থিতিশীলতা নির্ধারণ করে এবং ডেটার শ্রেণি বিভাজনের ক্ষমতা বৃদ্ধি করে। মডেলটি চেষ্টা করে এমন একটি Hyperplane নির্বাচন করতে, যার margin সর্বাধিক হয়, কারণ এটি সাধারণত মডেলটির জেনারালাইজেশন ক্ষমতা বাড়িয়ে দেয়, অর্থাৎ নতুন, অজ্ঞাত ডেটার জন্য মডেলটি আরও ভাল কাজ করবে।

Margin এর ভূমিকা:

  • অত্যধিক ফিটিং প্রতিরোধ:
    বড় margin নির্বাচন করা মানে মডেলটি সাধারণত ডেটার "গভীর" প্যাটার্ন শিখছে, যা নতুন ডেটাতে ওভারফিটিং প্রতিরোধ করে। সুতরাং, এটি মডেলের জেনারালাইজেশন ক্ষমতা বাড়ায়।
  • সর্বোচ্চ মার্জিন:
    SVM সর্বোচ্চ margin চায়, কারণ একটি বড় margin ডেটার মধ্যে বিভাজন স্পষ্ট করে এবং অপ্রত্যাশিত ফলাফল থেকে সুরক্ষা দেয়।
  • বিভাজন শক্তিশালী করা:
    Margin যত বড় হবে, তত মডেলটি ডেটার শ্রেণিগুলি বিভাজন করতে "বিশ্বাসযোগ্য" বা "শক্তিশালী" হবে। এটি মডেলটির পারফরম্যান্স উন্নত করতে সহায়ক।

Hyperplane এবং Margin এর মধ্যে সম্পর্ক

  • Hyperplane হচ্ছে সীমানা যা ডেটার দুটি শ্রেণি আলাদা করে, এবং Margin হলো এই সীমানার দুইপাশে ডেটার মধ্যে থাকা সর্বোচ্চ দূরত্ব।
  • SVM এর লক্ষ্য হলো এমন একটি Hyperplane খুঁজে বের করা যার Margin যত বড় সম্ভব, কারণ এটি মডেলের জেনারালাইজেশন ক্ষমতা বৃদ্ধি করে এবং নতুন ডেটার জন্য আরও নির্ভুল সিদ্ধান্ত নিতে সহায়ক হয়।

সারাংশ:

  • Hyperplane: একটি সীমানা যা ডেটার দুটি শ্রেণি আলাদা করে।
  • Margin: Hyperplane থেকে শ্রেণির ডেটার মধ্যে সর্বোচ্চ দূরত্ব, যা মডেলের স্থিতিশীলতা এবং জেনারালাইজেশন ক্ষমতা বাড়ায়।

SVM-এ, Hyperplane এবং Margin একে অপরের সাথে সম্পর্কিত, এবং তাদের সহায়তায় মডেলটি শ্রেণি বিভাজনের জন্য সর্বোত্তম সিদ্ধান্ত নিতে সক্ষম হয়।

Content added By

Linear এবং Non-linear SVM

220

SVM বা Support Vector Machine হল একটি জনপ্রিয় মেশিন লার্নিং অ্যালগরিদম যা মূলত ক্লাসিফিকেশন এবং রিগ্রেশন সমস্যা সমাধানের জন্য ব্যবহৃত হয়। এটি ক্লাসিফিকেশন সমস্যায় ইনপুট ডেটাকে বিভিন্ন শ্রেণীতে ভাগ করার জন্য একটি সীমানা (decision boundary) তৈরি করে। Linear SVM এবং Non-linear SVM হলো এই অ্যালগরিদমের দুটি ভিন্ন ধরনের বাস্তবায়ন, যা ডেটার প্রকৃতির উপর নির্ভর করে।


Linear SVM

Linear SVM হলো একটি ক্লাসিফিকেশন অ্যালগরিদম যা সরল, সোজা একটি সীমান্ত বা হাইপারপ্লেন ব্যবহার করে ডেটাকে দুটি শ্রেণিতে বিভক্ত করে। এটি কেবলমাত্র সেই সমস্ত ডেটাসেটের জন্য উপযোগী যেখানে ডেটা লিনিয়ারভাবে আলাদা (linearly separable) করা যায়। অর্থাৎ, দুটি শ্রেণীকে সরল একটি সোজা রেখা বা সমতল দ্বারা আলাদা করা যায়।

প্রক্রিয়া:

Linear SVM-এ, সেরা হাইপারপ্লেন (decision boundary) নির্বাচন করা হয় যা দুটি শ্রেণীর মধ্যে সর্বাধিক মার্জিন তৈরি করে, অর্থাৎ যে হাইপারপ্লেনটি দুটি শ্রেণীকে সর্বোচ্চ দূরত্বে আলাদা করে।

মডেলের লক্ষ্য:
Linear SVM দুটি শ্রেণীকে বিভক্ত করতে এমন একটি হাইপারপ্লেন খুঁজে বের করা যা দুটি শ্রেণীর মধ্যে সর্বাধিক মার্জিন তৈরি করে।

ম্যাথমেটিক্যাল মডেল:
wx+b=0w \cdot x + b = 0
এখানে,

  • w: হাইপারপ্লেনের normal vector
  • x: ডেটা পয়েন্ট
  • b: বাইয়াস (bias term)

Linear SVM এর উদাহরণ:

from sklearn.svm import SVC
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

# ডেটা তৈরি করা
X, y = make_classification(n_samples=100, n_features=2, n_informative=2, n_clusters_per_class=1, random_state=42)

# ডেটা ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Linear SVM মডেল তৈরি করা
model = SVC(kernel='linear')
model.fit(X_train, y_train)

# পূর্বাভাস
y_pred = model.predict(X_test)

Non-linear SVM

Non-linear SVM ব্যবহার করা হয় যখন ডেটা linearly separable (অর্থাৎ, সরল একটি সীমানা দ্বারা আলাদা করা যায় না) না হয়। এই ক্ষেত্রে, SVM ডেটাকে একটি higher-dimensional space-এ ম্যাপ করতে সাহায্য করে যেখানে ডেটা লিনিয়ারভাবে আলাদা করা যেতে পারে। এটি kernel trick ব্যবহার করে করা হয়।

Kernel Trick:

Kernel function একটি ম্য্যাথমেটিক্যাল ফাংশন যা ডেটাকে একটি উচ্চতর মাত্রায় ম্যাপ করে। SVM এই kernel function ব্যবহার করে higher-dimensional space-এ ডেটার মধ্যে সম্পর্ক শিখে।

প্রধান kernel functions:

  • Linear Kernel: সাধারণ লিনিয়ার ডেটার জন্য।
  • Polynomial Kernel: পলিনোমিয়াল ডেটার জন্য।
  • RBF (Radial Basis Function) Kernel: গড়ে ওঠা ডেটার জন্য, বিশেষ করে যেখানে ডেটা সোজা রেখা দ্বারা বিভক্ত করা যায় না।
  • Sigmoid Kernel: নিউরাল নেটওয়ার্কের মতো আচরণ করে।

Non-linear SVM এর উদাহরণ:

from sklearn.svm import SVC
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split

# Non-linear ডেটাসেট তৈরি করা
X, y = make_moons(n_samples=100, noise=0.2, random_state=42)

# ডেটা ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Non-linear SVM (RBF kernel) মডেল তৈরি করা
model = SVC(kernel='rbf')
model.fit(X_train, y_train)

# পূর্বাভাস
y_pred = model.predict(X_test)

Linear vs Non-linear SVM:

বৈশিষ্ট্যLinear SVMNon-linear SVM
ডেটা আকারলিনিয়ারভাবে আলাদা করা যায় এমন ডেটালিনিয়ারভাবে আলাদা না করা যায় এমন ডেটা
ক্লাসিফিকেশন বাউন্ডারিসরল একটি হাইপারপ্লেন (সোজা রেখা বা সমতল)উচ্চ মাত্রার স্পেসে ম্যাপ করা এবং সেখান থেকে সিদ্ধান্ত নেওয়া
Kernel functionKernel ফাংশন ব্যবহৃত হয় নাKernel trick (RBF, Polynomial, Sigmoid ইত্যাদি) ব্যবহার করা হয়
প্যারামিটারশুধুমাত্র হাইপারপ্লেনের জন্য সোজা প্যারামিটারKernel ফাংশন এবং তার প্যারামিটার নিয়ে কাজ করতে হয়
ব্যবহারসাধারণত সহজ এবং কম্পিউটেশনে দ্রুতজটিল এবং বিভিন্ন ক্ষেত্রে ব্যবহারযোগ্য

সারাংশ

  • Linear SVM একটি সরল সীমান্ত (hyperplane) ব্যবহার করে ডেটাকে দুটি শ্রেণিতে বিভক্ত করে। এটি কেবল তখনই কার্যকরী, যখন ডেটা লিনিয়ারভাবে আলাদা করা যায়।
  • Non-linear SVM ডেটাকে একটি উচ্চমাত্রার স্পেসে ম্যাপ করার জন্য kernel trick ব্যবহার করে, যেখানে ডেটা লিনিয়ারভাবে আলাদা করা যেতে পারে। এটি তখন ব্যবহার করা হয় যখন ডেটা সরল একটি সীমানা দ্বারা আলাদা করা সম্ভব নয়।
Content added By

Kernel Functions (Linear, Polynomial, RBF)

206

কোনো মেশিন লার্নিং মডেলে Kernel Functions ব্যবহার করা হয় মূলত সাপোর্ট ভেক্টর মেশিন (SVM) বা অন্যান্য কের্নেল বেসড অ্যালগরিদমের মাধ্যমে ডেটাকে উচ্চ মাত্রায় ম্যাপ করতে। কের্নেল ফাংশন মডেলকে ডেটার অপ্রত্যক্ষ বৈশিষ্ট্য (features) বা গঠন সম্পর্কে শিখতে সহায়ক হয়, বিশেষ করে যখন ডেটা লিনিয়ারলি সেপারেবল নয়, অর্থাৎ একটি রেখা বা সোজা প্লেন দিয়ে শ্রেণীভুক্ত করা যায় না।

Kernel Functions এর ভূমিকা

Kernel functions ব্যবহার করা হয় যাতে মডেলটি ডেটাকে একটি উচ্চমাত্রার স্পেসে ম্যাপ করতে পারে, যেখানে ডেটা লিনিয়ারভাবে পৃথক করা সম্ভব। এটি একটি kernel trick হিসেবে পরিচিত, যেখানে কম্পিউটেশনের জটিলতা বাড়ানো ছাড়াই উচ্চমাত্রায় ডেটাকে স্থানান্তর করা হয়।


১. Linear Kernel (লিনিয়ার কের্নেল)

Linear Kernel হলো সবচেয়ে সাধারণ এবং সহজ কের্নেল। এটি দুটি ইনপুট ভেক্টরের মধ্যে ডট প্রোডাক্ট ব্যবহার করে। এই কের্নেলটি তখন ব্যবহার করা হয় যখন ডেটা পূর্বেই লিনিয়ারলি সেপারেবল (linearly separable) থাকে, অর্থাৎ আপনি সহজেই একটি রেখা বা প্লেন দিয়ে ডেটাকে বিভক্ত করতে পারেন।

ফর্মুলা:

K(x,y)=xTyK(x, y) = x^T y

এখানে, xx এবং yy দুটি ইনপুট ভেক্টর।

ব্যবহার:

  • যখন ডেটা সরাসরি সোজা রেখা বা প্লেনের মাধ্যমে ভাগ করা যায়।
  • এটি মডেলের জন্য কম্পিউটেশনালভাবে দ্রুত এবং সহজ।

উদাহরণ:

  • SVM তে Linear Kernel ব্যবহার করা হয় যখন ডেটা লিনিয়ার ক্লাসিফিকেশনের জন্য উপযুক্ত হয়।

২. Polynomial Kernel (পলিনোমিয়াল কের্নেল)

Polynomial Kernel মডেলকে ডেটাকে একটি উচ্চ মাত্রার পলিনোমিয়াল স্পেসে ম্যাপ করতে সাহায্য করে। এটি ইনপুট ভেক্টরের ডট প্রোডাক্টের পলিনোমিয়ালকে গুণ করে, যা ডেটার মধ্যে লুকানো সম্পর্কগুলি ধরতে সহায়ক।

ফর্মুলা:

K(x,y)=(xTy+c)dK(x, y) = (x^T y + c)^d

এখানে:

  • cc হলো একটি কনস্ট্যান্ট,
  • dd হলো পলিনোমিয়ালের ডিগ্রী।

ব্যবহার:

  • যখন ডেটা লিনিয়ার নয় তবে একটি পলিনোমিয়াল বৈশিষ্ট্যের সাথে বিভক্ত করা যায়।
  • এটি আরও জটিল শ্রেণীবিন্যাসের সমস্যার জন্য কার্যকরী, যেখানে ডেটা একটি সোজা রেখা দ্বারা বিভক্ত হতে পারে না।

উদাহরণ:

  • SVM এর মধ্যে Polynomial Kernel ব্যবহার করা হয় যখন ডেটাতে উচ্চমাত্রার সম্পর্ক থাকে যা সোজা রেখায় বিভক্ত করা যায় না।

৩. RBF Kernel (Radial Basis Function Kernel)

RBF Kernel, বা Gaussian Kernel, একটি জনপ্রিয় এবং শক্তিশালী কের্নেল যা একটি পয়েন্টের উপর ভিত্তি করে তার সাপেক্ষে ইনফিনিট ডাইমেনশনাল স্পেসে ডেটাকে ম্যাপ করে। এটি ডেটাকে একটি বৃত্তাকার বা গাউসিয়ান ফাংশনের ভিত্তিতে উচ্চ মাত্রায় ম্যাপ করতে পারে এবং সেজন্য ডেটার মধ্যে খুব সূক্ষ্ম প্যাটার্ন শনাক্ত করতে সক্ষম।

ফর্মুলা:

K(x,y)=exp(xy22σ2)K(x, y) = \exp \left( - \frac{\| x - y \|^2}{2 \sigma^2} \right)

এখানে, xy2\| x - y \|^2 হলো দুটি ইনপুটের মধ্যে ইউক্লিডিয়ান দূরত্ব এবং σ\sigma হলো কনস্ট্যান্ট (রেঞ্জ প্রভাবিত করে)।

ব্যবহার:

  • Non-linear data যেখানে ডেটার মধ্যে সূক্ষ্ম সম্পর্ক থাকতে পারে এবং একটি সোজা রেখা বা প্লেন দ্বারা বিভক্ত করা সম্ভব নয়।
  • এটি সবচেয়ে জনপ্রিয় কের্নেল যেখানে ডেটা একে অপরের থেকে খুব আলাদা হতে পারে বা ক্লাস্টারিং করা থাকতে পারে।

উদাহরণ:

  • SVM এর মধ্যে RBF Kernel ব্যবহার করা হয় যখন ডেটার মধ্যে গভীর সম্পর্ক থাকে এবং সোজা রেখা বা পলিনোমিয়াল দ্বারা বিভক্ত করা সম্ভব নয়।

Kernel Functions এর তুলনা

কের্নেল টাইপফাংশনকিভাবে ব্যবহৃত হয়
Linear KernelK(x,y)=xTyK(x, y) = x^T yডেটা লিনিয়ার সেপারেবল হলে ব্যবহার।
Polynomial KernelK(x,y)=(xTy+c)dK(x, y) = (x^T y + c)^dডেটাতে পলিনোমিয়াল সম্পর্ক থাকলে।
RBF KernelK(x,y)=exp(xy2/2σ2)K(x, y) = \exp(-\| x - y \|^2 / 2\sigma^2)ডেটা নন-লিনিয়ার, সূক্ষ্ম সম্পর্ক হলে।

সারাংশ

  • Linear Kernel ব্যবহার করা হয় যখন ডেটা লিনিয়ার সেপারেবল (linearly separable) হয়।
  • Polynomial Kernel ব্যবহার করা হয় যখন ডেটা লিনিয়ার নয়, তবে পলিনোমিয়াল বৈশিষ্ট্য থাকতে পারে।
  • RBF Kernel সবচেয়ে শক্তিশালী কের্নেল, যা নন-লিনিয়ার ডেটা সম্পর্ক এবং সূক্ষ্ম বৈশিষ্ট্যগুলি চিহ্নিত করতে সক্ষম।

Kernel functions SVM এবং অন্যান্য কের্নেল-বেসড মডেলগুলির জন্য অত্যন্ত গুরুত্বপূর্ণ, কারণ এগুলি মডেলকে বেশি নমনীয় এবং জটিল ডেটা সম্পর্ক বুঝতে সক্ষম করে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...